home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-17 / mouse.zip / MACU.PAS < prev    next >
Pascal/Delphi Source File  |  1991-08-06  |  19KB  |  736 lines

  1. unit macu;
  2. Interface
  3. Uses Graph,mousu;
  4. type
  5.     subtype = Array [1..10,1..10] of Record
  6.               Title:string;
  7.               end;
  8.  
  9.     gwindowtype = Array [1..100] of Record
  10.                  Xspot,
  11.                  Yspot,
  12.                  Xend,
  13.                  Yend,kind:Integer;
  14.                  Title:string;
  15.                  end;
  16.  
  17.     Menutype = Array [1..10] of Record
  18.                Title:String;
  19.                Legth:integer;
  20.                end;
  21.  
  22.     ordertype = array [1..100] of integer;
  23.  
  24. Var
  25.    gray50:fillpatterntype;
  26.  
  27.    gwindow:gwindowtype;
  28.  
  29.    Menu:Menutype;
  30.  
  31.    submenu:subtype;
  32.  
  33.    order:ordertype;
  34.  
  35.    Number,XX,
  36.    Legth,YY,
  37.    X,Y,kind,xx2,
  38.    amountofmenus,
  39.    amountofwindows,
  40.    color,
  41.    zz,
  42.    topx,topy,
  43.    botx,boty,
  44.    omousex,
  45.    omousey,
  46.    mmousex,
  47.    mmousey,
  48.    movex,
  49.    movey,lcv,lcv2,
  50.    current:integer;
  51.  
  52.    Title:string;
  53.  
  54.    Resized,
  55.    Moved:boolean;
  56.  
  57. Procedure StartUpScreen;
  58.  
  59. Procedure SetUpMouseToCurrentWindow;
  60.  
  61. Procedure MakeMenu(Number:integer;Title:string);
  62.  
  63. Procedure MakeSubMenu(number,x:integer;title:string);
  64.  
  65. Procedure CheckMenu(number:integer;var chosen:integer);
  66.  
  67. Procedure ShowIcon(X,Y,number:Integer);
  68.  
  69. Procedure SpecialIcon(Xx,Yy:integer;title:string);
  70.  
  71. Function CurrentDrawingWindow:integer;
  72.  
  73. Procedure SetCurrentDrawingWindow(number:integer);
  74.  
  75. Function GetMaxWindowX:Integer;
  76.  
  77. Function GetMaxWindowY:Integer;
  78.  
  79. Function GetMinWindowX:Integer;
  80.  
  81. Function GetMinWindowY:Integer;
  82.  
  83. Function FreeWindow:Integer;
  84.  
  85. Procedure ShowAllWindows;
  86.  
  87. Procedure CloseWindow(number:integer);
  88.  
  89. Procedure MakeWindow(number,X,Y,xx,yy:integer;title:string;kind:integer);
  90.  
  91. Procedure MoveWindow(number,X,Y,xx,yy:integer);
  92.  
  93. Procedure ShowWindow(number:integer);
  94.  
  95. Procedure Checkwindow(number:integer);
  96.  
  97. Procedure CheckAllWindows;
  98.  
  99. Implementation
  100.  
  101.  
  102. Procedure StartUpScreen;
  103. Begin
  104.      hidemousecursor;
  105.      setviewport(0,0,getmaxx,getmaxy,clipoff);
  106.      Setfillpattern(gray50,color);
  107.      Bar(0,10,GetMaxX,GetMaxY);
  108.      SetFillstyle(1,15);
  109.      Bar(0,0,GetMaxX,9);
  110.      SetTextStyle(smallfont,horizdir,4);
  111.      setcolor(0);
  112.      XX:=0;
  113.      for lcv:=1 to amountofmenus do
  114.      begin
  115.           outtextxy(xx,-1,menu[lcv].title);
  116.           xx:=xx+menu[lcv].Legth;
  117.      end;
  118.      showmousecursor;
  119. end;
  120.  
  121.  
  122. Procedure SetUpMouseToCurrentWindow;
  123. var
  124.    viewport:viewporttype;
  125. begin
  126.      getbuttonstatus;
  127.      getviewsettings(viewport);
  128.      with viewport do
  129.      begin
  130.           mousex:=mousex-x1;
  131.           mousey:=mousey-y1;
  132.      end;
  133. end;
  134.  
  135.  
  136. Procedure Puttop(number:integer);
  137. var
  138.    noo:integer;
  139. begin
  140.      noo:=amountofwindows;
  141.      For lcv:=1 to amountofwindows do
  142.           if order[lcv]=number then noo:=lcv;
  143.      for lcv:=noo downto 1 do
  144.           order[lcv]:=order[lcv-1];
  145.      order[1]:=number;
  146. end;
  147.  
  148.  
  149. Procedure getridof(number:integer);
  150. var
  151.    noo:integer;
  152. begin
  153.      For lcv:=1 to amountofwindows do
  154.           if order[lcv]=number then noo:=lcv;
  155.      for lcv:=noo to amountofwindows do
  156.      begin
  157.           order[lcv]:=order[lcv+1];
  158.      end;
  159.      amountofwindows:=amountofwindows-1;
  160. end;
  161.  
  162.      
  163. Procedure ShowIcon(X,Y,number:Integer);
  164. begin
  165.      if number=1 then
  166.      begin
  167.           rectangle(x,y,x+32,y+32);
  168.           line(x+27,y,x,y+27);
  169.      end;
  170.      if number=2 then
  171.      begin
  172.           outtextxy(x+5,y+5,'DATA');
  173.      end;
  174. end;
  175.  
  176.  
  177. Procedure SpecialIcon(Xx,Yy:integer;title:string);
  178. var
  179.    co,txt3:integer;
  180.    txt2:char;
  181.  
  182. begin
  183.      assign(input,title);
  184.      reset(input);
  185.      for y:=1 to 32 do
  186.      begin
  187.           for x:=1 to 32 do
  188.           begin
  189.                read(input,txt2);
  190.                co:=0;
  191.                val(txt2,co,txt3);
  192.                if txt3=1 then
  193.                begin
  194.                     if txt2='A' then co:=10;
  195.                     if txt2='B' then co:=11;
  196.                     if txt2='C' then co:=12;
  197.                     if txt2='D' then co:=13;
  198.                     if txt2='E' then co:=14;
  199.                     if txt2='F' then co:=15;
  200.                end;
  201.                putpixel(x+xx,y+yy,co);
  202.           end;
  203.           readln(input,txt2);
  204.      end;
  205.      close(input);
  206. end;
  207.  
  208.  
  209. Function CurrentDrawingWindow:integer;
  210. begin
  211.      currentdrawingwindow:=current;
  212. end;
  213.  
  214.  
  215.  
  216. Procedure SetCurrentDrawingWindow(number:integer);
  217. Begin
  218.      current:=number;
  219.      kind:=gwindow[number].kind;
  220.      if (kind=1) or (kind=2) or (kind=3) then
  221.      begin
  222.      setviewport( gwindow[number].xspot+10,gwindow[number].yspot+10,
  223.                   gwindow[number].xend+10,gwindow[number].yend+10,clipon);
  224.      end;
  225.      if kind=5 then
  226.      begin
  227.      setviewport( gwindow[number].xspot,gwindow[number].yspot+10,
  228.                   gwindow[number].xend,gwindow[number].yend,clipon);
  229.      end;
  230.      if kind=4 then
  231.      begin
  232.      setviewport( gwindow[number].xspot,gwindow[number].yspot,
  233.                   gwindow[number].xend,gwindow[number].yend,clipon);
  234.      end;
  235. end;
  236.  
  237.                                          
  238. Function GetMaxWindowX:Integer;
  239. Var
  240.    viewport:viewporttype;
  241.  
  242. Begin
  243.      getviewsettings(viewport);
  244.      with viewport do
  245.      begin
  246.           getmaxwindowx:=x2;
  247.      end;
  248. end;
  249.  
  250.  
  251. Function GetMaxWindowY:Integer;
  252. Var
  253.    viewport:viewporttype;
  254.  
  255. Begin
  256.      getviewsettings(viewport);
  257.      with viewport do
  258.      begin
  259.           getmaxwindowy:=y2;
  260.      end;
  261. end;
  262.  
  263. Function GetMinWindowX:Integer;
  264. Var
  265.    viewport:viewporttype;
  266.  
  267. Begin
  268.      getviewsettings(viewport);
  269.      with viewport do
  270.      begin
  271.           getminwindowx:=x1;
  272.      end;
  273. end;
  274.  
  275.  
  276. Function GetMinWindowY:Integer;
  277. Var
  278.    viewport:viewporttype;
  279.  
  280. Begin
  281.      getviewsettings(viewport);
  282.      with viewport do
  283.      begin
  284.           getminwindowy:=y1;
  285.      end;
  286. end;
  287.  
  288.  
  289. Function FreeWindow:integer;
  290. begin
  291.      for lcv:=1 to 100 do
  292.      begin
  293.           if gwindow[lcv].title='' then
  294.           begin
  295.                freewindow:=lcv;
  296.                exit;
  297.           end;
  298.      end;
  299. end;
  300.  
  301.  
  302. Procedure ShowWindow(number:integer);
  303. var
  304.    mx,lcv,ln:integer;
  305. begin
  306.      ln:=-1;
  307.      setviewport(0,0,getmaxx,getmaxy,clipoff);
  308.      x:=gwindow[number].xspot;
  309.      y:=gwindow[number].yspot;
  310.      xx:=gwindow[number].xend;
  311.      yy:=gwindow[number].yend;
  312.      kind:=gwindow[number].kind;
  313.      setfillstyle(1,15);
  314.      bar(x,y,xx,yy);
  315.      setcolor(0);
  316.      rectangle(x,y,xx,yy);
  317.      if (kind<>4) and (kind<>5) then rectangle(x+10,y+10,xx-10,yy-10);
  318.      if (kind=1) or (kind=2) then rectangle(x+2,y+2,x+8,y+8);
  319.      if (kind=1) or (kind=3) then rectangle(xx-2,yy-2,xx-8,yy-8);
  320.      if (kind=5) then line(x,y+10,xx,y+10);
  321.      if kind<>4 then
  322.      begin
  323.      repeat
  324.            ln:=ln+1;
  325.            mx:=gwindow[number].xend-gwindow[number].xspot;
  326.            mx:=mx div 2;
  327.            mx:=mx-((length(gwindow[number].title)-ln)*6);
  328.            mx:=mx+gwindow[number].xspot;
  329.      until mx>gwindow[number].xspot+10;
  330.      moveto(mx,gwindow[number].yspot-1);
  331.      for lcv:=1 to length(gwindow[number].title)-ln do
  332.      begin
  333.           outtext(gwindow[number].title[lcv]);
  334.      end;
  335.      setviewport(x,y,xx,yy,clipon);
  336.      if (order[1]=number) and (gwindow[number].title<>'') then
  337.      begin
  338.           for lcv:=1 to 4 do
  339.           begin
  340.                if (kind=1) or (kind=2) then line(10,lcv*2,mx-2-topx,lcv*2);
  341.                if (kind=3) or (kind=5) then line(0,lcv*2,mx-2-topx,lcv*2);
  342.                line((mx+((length(gwindow[number].title)-ln)*6))-topx,lcv*2,botx-topx,lcv*2);
  343.           end;
  344.      end;
  345.      end;
  346.      if (kind<>4) or (kind<>5) then setviewport(x+10,y+10,xx-10,yy-10,clipon);
  347.      if kind=5 then setviewport(x,y+10,xx,yy,clipon);
  348.      if kind=4 then setviewport(x,y,xx,yy,clipon);
  349. end;
  350.  
  351.  
  352. Procedure ShowAllWindows;
  353. begin
  354.      hidemousecursor;
  355.      For lcv:=amountofwindows downto 1 do
  356.      begin
  357.           if gwindow[order[lcv]].title<>'' then showwindow(order[lcv]);
  358.      end;
  359.      showmousecursor;
  360. end;
  361.  
  362.  
  363. procedure CloseWindow(number:integer);
  364. begin
  365.      hidemousecursor;
  366.      setfillpattern(gray50,color);
  367.      bar(topx,topy,botx,boty);
  368.      showmousecursor;
  369.      gwindow[number].xspot:=getmaxx+1;
  370.      gwindow[number].yspot:=getmaxy+1;
  371.      gwindow[number].xend:=getmaxx+1;
  372.      gwindow[number].yend:=getmaxy+1;
  373.      gwindow[number].title:='';
  374.      getridof(number);
  375. end;
  376.  
  377.  
  378. Procedure MakeWindow(number,X,Y,XX,YY:integer;title:string;kind:integer);
  379. Begin
  380.      amountofwindows:=amountofwindows+1;
  381.      puttop(number);
  382.      gwindow[number].xspot:=x;
  383.      gwindow[number].yspot:=y;
  384.      gwindow[number].xend:=XX;
  385.      gwindow[number].yend:=yy;
  386.      gwindow[number].title:=title;
  387.      gwindow[number].kind:=kind;
  388. end;
  389.  
  390.  
  391. Procedure MoveWindow(number,X,Y,xx,yy:integer);
  392. begin
  393.      puttop(number);
  394.      gwindow[number].xspot:=x;
  395.      gwindow[number].yspot:=y;
  396.      gwindow[number].xend:=XX;
  397.      gwindow[number].yend:=yy;
  398. end;
  399.  
  400.  
  401. Procedure MoveNew;
  402. var
  403.    omx,mx,
  404.    omy,my:integer;
  405. Begin
  406.      setviewport(0,0,getmaxx,getmaxy,clipoff);
  407.      setwritemode(1);
  408.      setcolor(15);
  409.      mx:=mousex+movex;
  410.      my:=mousey+movey;
  411.      omx:=mx;
  412.      omy:=my;
  413.      repeat
  414.            if (omx<>mx) or (omy<>my) then
  415.            begin
  416.            if mx<1 then
  417.            begin
  418.                 mx:=omx;
  419.                 hidemousecursor;
  420.                 SetMouseCursorPos(omx-movex,mousey);
  421.                 showmousecursor;
  422.            end;
  423.            if my<11 then
  424.            begin
  425.                 my:=omy;
  426.                 hidemousecursor;
  427.                 SetMouseCursorPos(mousex,omy-movey);
  428.                 showmousecursor;
  429.            end;
  430.  
  431.            hidemousecursor;
  432.            rectangle(OMx,OMy,Omx+(botx-topx),Omy+(boty-topy));
  433.            rectangle(Mx,My,mx+(botx-topx),my+(boty-topy));
  434.            showmousecursor;
  435.            end;
  436.            omx:=mx;
  437.            omy:=my;
  438.            getbuttonstatus;
  439.            mx:=mousex+movex;
  440.            my:=mousey+movey;
  441.      until mkey<>left;
  442.      hidemousecursor;
  443.      rectangle(OMx,OMy,Omx+(botx-topx),Omy+(boty-topy));
  444.      showmousecursor;
  445.      setwritemode(0);
  446.      moved:=true;
  447. end;
  448.  
  449.  
  450. Procedure changebox;
  451. var
  452.    omx,mx,
  453.    omy,my:integer;
  454. Begin
  455.      setviewport(0,0,getmaxx,getmaxy,clipoff);
  456.      setwritemode(1);
  457.      setcolor(15);
  458.      mx:=mousex+movex;
  459.      my:=mousey+movey;
  460.      omx:=mx;
  461.      omy:=my;
  462.      repeat
  463.            if (omx<>mx) or (omy<>my) then
  464.            begin
  465.                 hidemousecursor;
  466.                 rectangle(topx,topy,mx+(botx-topx),my+(boty-topy));
  467.                 rectangle(topx,topy,Omx+(botx-topx),Omy+(boty-topy));
  468.                 showmousecursor;
  469.            end;
  470.            omx:=mx;
  471.            omy:=my;
  472.            getbuttonstatus;
  473.            mx:=mousex+movex;
  474.            my:=mousey+movey;
  475.      until mkey<>left;
  476.      hidemousecursor;
  477.      rectangle(topx,topy,Omx+(botx-topx),Omy+(boty-topy));
  478.      showmousecursor;
  479.      setwritemode(0);
  480.      resized:=true;
  481. end;
  482.  
  483.  
  484. Procedure Checkwindow(number:integer);
  485. begin
  486.      if gwindow[number].title='' then exit;
  487.      topx:=gwindow[number].xspot;
  488.      topy:=gwindow[number].yspot;
  489.      botx:=gwindow[number].xend;
  490.      boty:=gwindow[number].yend;
  491.      kind:=gwindow[number].kind;
  492.      omousex:=mousex;
  493.      omousey:=mousey;
  494.      if (mkey=left) and ((mousex<topx+10) or (mousex>botx-10) or
  495.                         (mousey<topy+10) or (mousey>boty-10)) then
  496.      begin
  497.           if (kind<>4) and (mousex<botx) and (mousex>topx+10) then
  498.           begin
  499.                if (mousey>topy) and (mousey<topy+10) then
  500.                begin
  501.                     movex:=topx-mousex;
  502.                     movey:=topy-mousey;
  503.                     movenew;
  504.                     mmousex:=mousex-omousex;
  505.                     mmousey:=mousey-omousey;
  506.                     hidemousecursor;
  507.                     setfillpattern(gray50,color);
  508.                     bar(topx,topy,botx,boty);
  509.                     topx:=mmousex+topx;
  510.                     topy:=mmousey+topy;
  511.                     botx:=mmousex+botx;
  512.                     boty:=mmousey+boty;
  513.                     MoveWindow(number,topx,topy,botx,boty);
  514.                     showmousecursor;
  515.                     puttop(number);
  516.                end;
  517.           end;
  518.           if ((kind=1) or (kind=3)) and (mousex<botx) and (mousex>botx-10) and (mousey<boty) and (mousey>boty-10) then
  519.           begin
  520.                movex:=topx-mousex;
  521.                movey:=topy-mousey;
  522.                setminmaxhorzcurspos(topx+40,getmaxx);
  523.                setminmaxvertcurspos(topy+40,getmaxy);
  524.                changebox;
  525.                mmousex:=mousex-omousex;
  526.                mmousey:=mousey-omousey;
  527.                hidemousecursor;
  528.                setfillpattern(gray50,color);
  529.                bar(topx,topy,botx,boty);
  530.                botx:=mmousex+botx;
  531.                boty:=mmousey+boty;
  532.                MoveWindow(number,topx,topy,botx,boty);
  533.                setminmaxhorzcurspos(0,getmaxx);
  534.                setminmaxvertcurspos(0,getmaxy);
  535.                showmousecursor;
  536.                puttop(number);
  537.           end;
  538.           if ((kind=1) or (kind=2)) and (mousex>topx) and (mousex<topx+10) and (mousey>topy) and (mousey<topy+10) then
  539.           begin
  540.                hidemousecursor;
  541.                setfillpattern(gray50,color);
  542.                bar(topx,topy,botx,boty);
  543.                showmousecursor;
  544.                gwindow[number].xspot:=getmaxx+1;
  545.                gwindow[number].yspot:=getmaxy+1;
  546.                gwindow[number].xend:=getmaxx+1;
  547.                gwindow[number].yend:=getmaxy+1;
  548.                gwindow[number].title:='';
  549.                getridof(number);
  550.           end;
  551.      end;
  552. end;
  553.  
  554. Procedure CheckAllWindows;
  555. var
  556.    no,nwindow:integer;
  557. Begin
  558.      moved:=false;
  559.      resized:=false;
  560.      if mkey=left then
  561.      begin
  562.           checkwindow(order[1]);
  563.           if amountofwindows>1 then
  564.           begin
  565.                for nwindow:=2 to amountofwindows do
  566.                begin
  567.                     no:=0;
  568.                     for lcv:=1 to nwindow-1 do
  569.                     begin
  570.                          if ((mousex<gwindow[order[lcv]].xspot) or (mousex>gwindow[order[lcv]].xend)) or
  571.                             ((mousey<gwindow[order[lcv]].yspot) or (mousey>gwindow[order[lcv]].yend)) then
  572.                             no:=no+1;
  573.                     end;
  574.                     if no=nwindow-1 then checkwindow(order[nwindow]);
  575.                end;
  576.           end;
  577.           if (moved) or (resized) then showallwindows;
  578.           current:=order[1];
  579.      end;
  580. end;
  581.  
  582.  
  583. Procedure MakeMenu(Number:integer;Title:string);
  584. Begin
  585.      Menu[number].title:=title;
  586.      menu[number].Legth:=length(title)*6;
  587.      amountofmenus:=amountofmenus+1;
  588. end;
  589.  
  590. Procedure MakeSubMenu(number,x:integer;title:string);
  591. begin
  592.      submenu[number,x].title:=title;
  593. end;
  594.  
  595.  
  596. Procedure CheckSubmenu(number,zz:integer;var chosen:integer);
  597. var
  598.    yy:integer;
  599. begin
  600.      if mkey=right then
  601.      begin
  602.           yy:=0;
  603.           for lcv:=1 to zz do
  604.           begin
  605.                if submenu[number,lcv].title<>'' then yy:=yy+10;
  606.           end;
  607.           if (mousex>xx) and (mousex<xx2) and (mousey>yy) and (mousey<yy+10) then
  608.           begin
  609.                hidemousecursor;
  610.                setfillstyle(1,0);
  611.                bar(xx,yy,xx2,yy+10);
  612.                setcolor(15);
  613.                outtextxy(xx,yy,submenu[number,lcv].title);
  614.                showmousecursor;
  615.                chosen:=zz;
  616.                repeat
  617.                      getbuttonstatus;
  618.                until (mkey<>right) or (mousey<yy) or (mousey>yy+10);
  619.                hidemousecursor;
  620.                setfillstyle(1,15);
  621.                bar(xx,yy,xx2,yy+10);
  622.                setcolor(0);
  623.                outtextxy(xx,yy,submenu[number,lcv].title);
  624.                showmousecursor;
  625.           end;
  626.      end;
  627. end;
  628.  
  629.  
  630. procedure showmenu(number:integer;var chosen:integer);
  631. var
  632.    yy:integer;
  633.    title:string;
  634. begin
  635.      setfillstyle(1,0);
  636.      bar(xx,0,xx+menu[number].legth,10);
  637.      setcolor(15);
  638.      outtextxy(xx,-1,menu[number].title);
  639.      setfillstyle(1,15);
  640.      yy:=10;
  641.      xx2:=0;
  642.      for lcv:=1 to 10 do
  643.      begin
  644.           title:=submenu[number,lcv].title;
  645.           if title<>'' then yy:=yy+10;
  646.           if (title<>'') and (length(title)>xx2) then xx2:=length(title);
  647.      end;
  648.      xx2:=xx2*6+xx;
  649.      bar(xx,10,xx2,yy);
  650.      setcolor(7);
  651.      rectangle(xx-1,10,xx2+1,yy+1);
  652.      setcolor(0);
  653.      yy:=10;
  654.      for lcv:=1 to 10 do
  655.      begin
  656.           if submenu[number,lcv].title<>'' then
  657.           begin
  658.                outtextxy(xx,yy,submenu[number,lcv].title);
  659.                yy:=yy+10;
  660.           end;
  661.      end;
  662.      showmousecursor;
  663.      repeat
  664.      chosen:=0;
  665.      for lcv:=1 to 10 do
  666.      begin
  667.           if submenu[number,lcv].title<>'' then checksubmenu(number,lcv,chosen);
  668.      end;
  669.      getbuttonstatus;
  670.      until (mkey<>right) or (((mousex<xx) or (mousex>xx+menu[number].legth)) and (mousey<10));
  671.      hidemousecursor;
  672.      setfillstyle(1,15);
  673.      bar(xx,0,xx+menu[number].legth,10);
  674.      setcolor(0);
  675.      outtextxy(xx,-1,menu[number].title);
  676.      setfillpattern(gray50,color);
  677.      bar(xx-1,10,xx2+1,yy+1);
  678.      showmousecursor;
  679. end;
  680.  
  681.  
  682. Procedure CheckMenu(number:integer;var chosen:integer);
  683. begin
  684.      setviewport(0,0,getmaxx,getmaxy,clipoff);
  685.      xx:=0;
  686.      if mkey=right then
  687.      begin
  688.           if (mousey>0) and (mousey<10) then
  689.           begin
  690.                for lcv:=1 to number-1 do
  691.                begin
  692.                     xx:=xx+menu[lcv].legth;
  693.                end;
  694.                if (mousex>xx) and (mousex<xx+menu[lcv].legth) then
  695.                begin
  696.                     hidemousecursor;
  697.                     showmenu(number,chosen);
  698.                     showallwindows;
  699.                end;
  700.           end;
  701.      end;
  702. end;
  703.  
  704.  
  705. Begin
  706.      for lcv:=1 to 4 do
  707.      begin
  708.           gray50[lcv*2-1]:=($AA);
  709.           gray50[lcv*2]:=($55);
  710.      end;
  711.      for lcv:=1 to 100 do
  712.      begin
  713.           gwindow[lcv].xspot:=getmaxx+1;
  714.           gwindow[lcv].yspot:=getmaxy+1;
  715.           gwindow[lcv].xend:=getmaxx+1;
  716.           gwindow[lcv].yend:=getmaxy+1;
  717.           gwindow[lcv].title:='';
  718.           order[lcv]:=0;
  719.      end;
  720.      for lcv:=1 to 10 do
  721.      begin
  722.           for lcv2:=1 to 10 do
  723.           begin
  724.               submenu[lcv,lcv2].Title:='';
  725.           end;
  726.      end;
  727.      for lcv:=1 to 10 do
  728.      begin
  729.           menu[lcv].title:='';
  730.           menu[lcv].legth:=0;
  731.      end;
  732.      amountofmenus:=0;
  733.      amountofwindows:=0;
  734.      color:=7;
  735. End.
  736.